<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    function Fther (name,str) { // 构造函数
       this.name = name;
       this.money = str;
    }
    Fther.prototype.explian = function () {
        console.log('失忆，回忆，记忆');
    }
    Fther.prototype.a = function () {
        console.log('我是a方法');
    }
    Fther.prototype.b = function () {
        console.log('我是b方法');
    }
    let obj = new Fther('张三','3个亿');
    console.log(obj);
    // obj.explian();
    // 这是使用 call 实现 属性继承
    // function Son (name,str) {
    //     Fther.call(this,name,str)
    // }

    // 使用 apply 实现属性的继承
    // function Son (name,str) {
    //     Fther.apply(this,[name,str])
    // }
    
  

    // 使用 bind 实现属性的继承 

    // 注意：我们在使用 call, apply, bind 实现继承的时候，只继承了属性，并没有继承方法。
    function Son (name,str) {
        Fther.bind(this)(name,str);
    }
    // Son.prototype.explian = Fther.prototype.explian;
    // Son.prototype.a = Fther.prototype.a;
    // Son.prototype.b = Fther.prototype.b;
    Son.prototype = Fther.prototype;
    Son.prototype.constructor = Son;
    let obj1 = new Son('张小三','3个亿');
    console.log(obj1);
    obj1.explian();
    obj1.a();
    console.log(obj1);
</script>